package es.uned.etsii.si3.taller;

import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
import java.sql.SQLException;

@DatabaseTable(tableName = "vehiculos")
public
class Vehiculo extends Persistente {
	public static final String ID_VEHICULO_FIELD_NAME = "id_vehiculo";
	public static final String MATRICULA_FIELD_NAME = "matricula";
	public static final String MARCA_FIELD_NAME = "marca";
	public static final String MODELO_FIELD_NAME = "modelo";
	
	@DatabaseField(generatedId = true)
	int id;
	@DatabaseField(width = 8)
	String matricula;
	@DatabaseField(width = 20)
	String marca;
	@DatabaseField(width = 20)
	String modelo;

	/**
	 * Factoría para crear nuevos vehiculos partiendo de un conjunto de datos,
	 * al tiempo que se crear el objeto en la base de datos
	 *
	 * @param  matricula matrícula identificadora del vehículo
	 * @param  marca     marca del vehículo
	 * @param  modelo    modelo del vehículo
	 * @return           un nuevo objeto, ya guardado en la base de datos
	 */
	public
	static Vehiculo crear(String matricula, String marca,
			String modelo) throws SQLException
	{
		Vehiculo vehiculo = new Vehiculo();

		vehiculo.setMatricula(matricula);
		vehiculo.setMarca(marca);
		vehiculo.setModelo(modelo);
		getClassDao(Vehiculo.class).create(vehiculo);

		return vehiculo;
	}

	public
	Vehiculo() {
		// ORM Lite necesita un constructor por defecto
	}

	public int     getId()        { return id; }
	public String  getMatricula() { return matricula; }
	public String  getMarca()     { return marca; }
	public String  getModelo()    { return modelo; }

	public
	void setMatricula(String matricula) {
		this.matricula = matricula;
	}

	public
	void setMarca(String marca) {
		this.marca = marca;
	}

	public
	void setModelo(String modelo) {
		this.modelo = modelo;
	}
}